#include <bits/stdc++.h>
using namespace std;
#define yes cout << "YES" << endl
#define no cout << "NO" << endl
using ll = long long;
const ll N = 5010;
struct pp
{
    ll t, d, p;
} a[N];
ll n,dp[N];
// bool cmp(pp a, pp b)
// {
//     if (a.p == b.p)
//     {
//         if (a.d == b.d)
//         {
//             return a.t < b.t;
//         }
//         return a.d < b.d;
//     }
//     return a.p > b.p;
// }
bool cmp(pp a,pp b)
{
    return a.d < b.d;
}
void solve()
{
    cin >> n;
    ll m=0;
    memset(dp, 0, sizeof dp);
    for (ll i = 1; i <= n; i++)
    {
        cin >> a[i].t >> a[i].d >> a[i].p;
        m = max(m, a[i].d);
    }
    ll ans = 0;
    sort(a + 1, a + 1 + n, cmp);

    for(ll i=1;i<=n;i++)
    {
        for (ll j = a[i].d; j >= a[i].t;j--)
        {
            dp[j] = max(dp[j], dp[j - a[i].t] + a[i].p);
        }
    }

    for(ll i=1;i<=m;i++)
    {
        ans = max(ans, dp[i]);
    }

    // for (ll i = 1; i <= n; i++)
    // {
    //     ll tm = 0, sum = 0;
    //     for (ll j = i; j <= n; j++)
    //     {
    //         if (tm + a[j].t <= a[j].d)
    //         {
    //             tm = tm + a[j].t;
    //             sum += a[j].p;
    //         }
    //     }
    //     ans = max(sum, ans);
    // }
    cout << ans << endl;
}
int main()
{
    int t = 1;
    cin >> t;
    while (t--)
    {
        solve();
    }
    return 0;
}
